pair<int, char> dir[4][4];
void solve()
{
	ll n, x, y;
	cin >> n >> x >> y;

	vector<int> col, row;
	dir[0][0] = {3, 'L'}; dir[0][1] = {1, 'R'};
	dir[1][0] = {2, 'R'}; dir[1][1] = {0, 'L'};
	dir[2][0] = {3, 'R'}; dir[2][1] = {1, 'L'};
	dir[3][0] = {2, 'L'}; dir[3][1] = {0, 'R'};
	for (int i = 0, x; i < n; i++) {
		cin >> x;
		if (i & 1) {
			row.emplace_back(x);
		} else {
			col.emplace_back(x);
		}
	}	

	auto get = [&](vector<int> &vec) {
		unordered_map<ll, ll> mp;
		for (int i = 0; i < (1 << (int)vec.size()); i++) {
			ll s = 0, m = (int)vec.size();
			for (int j = 0; j < (int)vec.size(); j++) {
				if (i >> (m - j - 1) & 1) {
					s += vec[j];
				} else {
					s -= vec[j];
				}
			}
			mp[s] = i;
		}
		return mp;
	};
	auto calc = [&](vector<int> &pos, ll v) {
		if ((int)pos.size() <= 20) {
			auto ret = get(pos);
			if (ret.count(v)) {
				return ret[v];
			}
			return -1ll;
		}
		int half = (int)pos.size() / 2;
		vector<int> vec1, vec2;
		for (int i = 0; i < (int)pos.size(); i++) {
			if (i < half) {
				vec1.push_back(pos[i]);
			} else {
				vec2.push_back(pos[i]);
			}
		}
		auto ret1 = get(vec1);
		auto ret2 = get(vec2);
		int rt = (int)pos.size() - half;
		for (auto &[x, y]: ret1) {
			if (ret2.count(v - x)) {
				return (y << rt) | ret2[v - x];
			}
		}
		return -1ll;
	};

	ll xt = calc(row, x);
	ll yt = calc(col, y);
	if (xt == -1 || yt == -1) {
		cout << "No";
	} else {
		int cur = 1;
		cout << "Yes" << '\n';
		int cx = (int)row.size() - 1, cy = (int)col.size() - 1;
		for (int i = 0; i < n; i++) {
			int vt = 0;
			if (i & 1) {
				vt = xt >> cx & 1; 
				cx--;
			} else {
				vt = yt >> cy & 1;
				cy--;
			}
			cout << dir[cur][vt].second;
			cur = dir[cur][vt].first;	
		}
	}
}